{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "o4JZ84moBKMr"
      },
      "source": [
        "# Navier-Stokes Forward Simulation\n",
        "\n",
        "Now let's target a somewhat more complex example: a fluid simulation based on the Navier-Stokes equations. This is still very simple with Φ<sub>Flow</sub> (phiflow), as differentiable operators for all steps of the simulator are already available in phiflow. The Navier-Stokes equations (in their incompressible form) introduce an additional pressure field $p$, and a constraint for conservation of mass, as introduced in equation {eq}`model-boussinesq2d`. We're also moving a marker field, denoted by $d$ here, with the flow. It indicates regions of higher temperature, and exerts a force via a buouyancy factor $\\xi$:\n",
        "\n",
        "$$\\begin{aligned}\n",
        "    \\frac{\\partial \\mathbf{u}}{\\partial{t}} + \\mathbf{u} \\cdot \\nabla \\mathbf{u} &= - \\frac{1}{\\rho} \\nabla p + \\nu \\nabla\\cdot \\nabla \\mathbf{u} + (0,1)^T \\xi d\n",
        "  \\quad \\text{s.t.} \\quad \\nabla \\cdot \\mathbf{u} = 0,\n",
        "  \\\\\n",
        "  \\frac{\\partial d}{\\partial{t}} + \\mathbf{u} \\cdot \\nabla d &= 0\n",
        "\\end{aligned}$$\n",
        "\n",
        "\n",
        "Here, we're aiming for an incompressible flow (i.e., $\\rho = \\text{const}$), and use a simple buoyancy model (the Boussinesq approximation) via the term $(0,1)^T \\xi d$. This approximates changes in density for incompressible solvers, without explicitly calculating $\\rho$. We assume a gravity force that acts along the y direction via the vector $(0,1)^T$.\n",
        "We'll solve this PDE on a closed domain with Dirichlet boundary conditions $\\mathbf{u}=0$ for the velocity, and Neumann boundaries $\\frac{\\partial p}{\\partial x}=0$ for pressure, on a domain $\\Omega$ with a physical size of $100 \\times 80$ units.\n",
        "[[run in colab]](https://colab.research.google.com/github/tum-pbs/pbdl-book/blob/main/overview-ns-forw.ipynb)\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kU7kMGE4JyDo"
      },
      "source": [
        "## Implementation\n",
        "\n",
        "As in the previous section, the first command with a \"!\" prefix installs the [phiflow python package from GitHub](https://github.com/tum-pbs/PhiFlow) via `pip` in your python environment. (Skip or modify this command if necessary.)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 29,
      "metadata": {
        "id": "da1uZcDXdVcF"
      },
      "outputs": [],
      "source": [
        "!pip install --upgrade --quiet phiflow==3.1\n",
        "#!pip install --upgrade --quiet git+https://github.com/tum-pbs/PhiFlow@develop\n",
        "\n",
        "from phi.flow import *  # The Dash GUI is not supported on Google colab, ignore the warning\n",
        "import pylab"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BVV1IKVqDfLl"
      },
      "source": [
        "## Setting up the simulation\n",
        "\n",
        "The following code sets up a few constants, which are denoted by upper case names. We'll use $40 \\times 32$ cells to discretize our domain, introduce a slight viscosity via $\\nu$, and define the time step to be $\\Delta t=1.5$.\n",
        "\n",
        "We're creating a first `CenteredGrid` here, which is initialized by a `Sphere` geometry object. This will represent the inflow region `INFLOW` where hot smoke is generated."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 30,
      "metadata": {
        "id": "WrA3IXDxv31P"
      },
      "outputs": [],
      "source": [
        "DT = 1.5\n",
        "NU = 0.01\n",
        "\n",
        "INFLOW = CenteredGrid(Sphere(center=tensor([30,15], channel(vector='x,y')), radius=10), extrapolation.BOUNDARY, x=32, y=40, bounds=Box(x=(0,80),y=(0,100))) * 0.2\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ExA0Pi2sFVka"
      },
      "source": [
        "The inflow will be used to inject smoke into a second centered grid `smoke` that represents the marker field $d$ from above. Note that we've defined a `Box` of size $100 \\times 80$ above. This is the physical scale in terms of spatial units in our simulation, i.e., a velocity of magnitude $1$ will move the smoke density by 1 unit per 1 time unit, which may be larger or smaller than a cell in the discretized grid, depending on the settings for `x,y`. You could parametrize your simulation grid to directly resemble real-world units, or keep appropriate conversion factors in mind.\n",
        "\n",
        "The inflow sphere above is already using the \"world\" coordinates: it is located at $x=30$ along the first axis, and $y=15$ (within the $100 \\times 80$ domain box).\n",
        "\n",
        "Next, we create grids for the quantities we want to simulate. For this example, we require a velocity field and a smoke density field."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 31,
      "metadata": {
        "id": "2uq_WZaeJyDq"
      },
      "outputs": [],
      "source": [
        "smoke = CenteredGrid(0, extrapolation.BOUNDARY, x=32, y=40, bounds=Box(x=(0,80),y=(0,100)))  # sampled at cell centers\n",
        "velocity = StaggeredGrid(0, extrapolation.ZERO, x=32, y=40, bounds=Box(x=(0,80),y=(0,100)))  # sampled in staggered form at face centers"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oMVrhwfKJyDq"
      },
      "source": [
        "We sample the smoke field at the cell centers and the velocity in [staggered form](https://tum-pbs.github.io/PhiFlow/Staggered_Grids.html). The staggered grid internally contains 2 centered grids with different dimensions, and can be converted into centered grids (or simply numpy arrays) via the `unstack` function, as explained in the link above.\n",
        "\n",
        "Next we define the update step of the simulation, which calls the necessary functions to advance the state of our fluid system by `dt`. The next cell computes one such step, and plots the marker density after one simulation frame."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 32,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 464
        },
        "id": "WmGZdOwswOva",
        "outputId": "9cbbb988-6903-4e66-8ccb-0cc9b29234df"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Max. velocity and mean marker density: [\u001b[94m0.1558497\u001b[0m, \u001b[94m0.008125\u001b[0m]\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7ebc74337340>"
            ]
          },
          "execution_count": 32,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVcAAAGdCAYAAACmQjDKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcO0lEQVR4nO3df2xV9f3H8ddF6BVs762ltLd3/bECCiqWZQzrjcrUVkpNCAgm+GOxbAQDK2SATu3iL9yWMkycuiEuMYEtsbBhrEQTYAK2xK2w0dFUdDa069Ya2uJIem+52Atf+vn+gV69UqC3vZ/ee93zkZyk955zz31z/nh6PD331mGMMQIAxNSYeA8AAN9ExBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwYGy8B/i6gYEBHT9+XGlpaXI4HPEeBwDCjDHq6+uT1+vVmDGXPjdNuLgeP35ceXl58R4DAC6qs7NTubm5l9wm4eKalpb2+U+OzxcASBRGkvlKpy4u4eL65aUA4gogEZkhXbLkF1oAYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYQFwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuiiuvmzZtVVFQkl8sll8sln8+nXbt2hdfffvvtcjgcEcuKFStiPjQAJLqx0Wycm5urDRs26JprrpExRr///e+1YMECHTlyRDfccIMkafny5XruuefCr5kwYUJsJwaAJBBVXOfPnx/x+Je//KU2b96sgwcPhuM6YcIEeTye2E0IAElo2Ndcz507p+3btysYDMrn84Wff/3115WZmakZM2aoqqpKp0+fvuR+QqGQAoFAxAIAyS6qM1dJ+uCDD+Tz+dTf36/U1FTV1tbq+uuvlyQ98MADKigokNfrVXNzsx5//HG1tLTozTffvOj+qqurtX79+uH/CwAgATmMMSaaF5w5c0YdHR3y+/1644039Nprr6m+vj4c2K/av3+/SkpK1NraqilTpgy6v1AopFAoFH4cCASUl5en8yfVjqj+MQBgl5E0IL/fL5fLdckto47r15WWlmrKlCn63e9+d8G6YDCo1NRU7d69W2VlZUPaXyAQkNvtFnEFkHiGHtcR3+c6MDAQceb5VU1NTZKknJyckb4NACSVqK65VlVVqby8XPn5+err61NNTY3q6uq0Z88etbW1qaamRnfffbcmTpyo5uZmrV27VnPmzFFRUZGt+QEgIUUV1xMnTuihhx5SV1eX3G63ioqKtGfPHt11113q7OzU3r179eKLLyoYDCovL0+LFy/Wk08+aWt2AEhYI77mGmtccwWQuEbxmisA4ELEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYQFwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgQVRx3bx5s4qKiuRyueRyueTz+bRr167w+v7+flVWVmrixIlKTU3V4sWL1dPTE/OhASDRRRXX3NxcbdiwQY2NjTp8+LDuvPNOLViwQB9++KEkae3atXr77be1Y8cO1dfX6/jx41q0aJGVwQEgkTmMMWYkO8jIyNDzzz+ve++9V5MmTVJNTY3uvfdeSdLHH3+s6667Tg0NDbr55puHtL9AICC3263z3XeMZDQAiDEjaUB+v18ul+uSWw77muu5c+e0fft2BYNB+Xw+NTY26uzZsyotLQ1vM336dOXn56uhoeGi+wmFQgoEAhELACS7qOP6wQcfKDU1VU6nUytWrFBtba2uv/56dXd3KyUlRenp6RHbZ2dnq7u7+6L7q66ultvtDi95eXlR/yMAINFEHddp06apqalJhw4d0sqVK1VRUaGPPvpo2ANUVVXJ7/eHl87OzmHvCwASxdhoX5CSkqKpU6dKkmbNmqW///3veumll7RkyRKdOXNGvb29EWevPT098ng8F92f0+mU0+mMfnIASGAjvs91YGBAoVBIs2bN0rhx47Rv377wupaWFnV0dMjn8430bQAgqUR15lpVVaXy8nLl5+err69PNTU1qqur0549e+R2u7Vs2TKtW7dOGRkZcrlcWr16tXw+35DvFACAb4qo4nrixAk99NBD6urqktvtVlFRkfbs2aO77rpLkvTrX/9aY8aM0eLFixUKhVRWVqZXXnnFyuAAkMhGfJ9rrHGfK4DENQr3uQIALo64AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYQFwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsiCqu1dXVmj17ttLS0pSVlaWFCxeqpaUlYpvbb79dDocjYlmxYkVMhwaARBdVXOvr61VZWamDBw/q3Xff1dmzZzV37lwFg8GI7ZYvX66urq7wsnHjxpgODQCJbmw0G+/evTvi8datW5WVlaXGxkbNmTMn/PyECRPk8XhiMyEAJKERXXP1+/2SpIyMjIjnX3/9dWVmZmrGjBmqqqrS6dOnR/I2AJB0ojpz/aqBgQGtWbNGt9xyi2bMmBF+/oEHHlBBQYG8Xq+am5v1+OOPq6WlRW+++eag+wmFQgqFQuHHgUBguCMBQMJwGGPMcF64cuVK7dq1S++//75yc3Mvut3+/ftVUlKi1tZWTZky5YL1zz77rNavXz/IK8dIcgxnNACwxEgakN/vl8vluuSWw4rrqlWrtHPnTh04cECFhYWX3DYYDCo1NVW7d+9WWVnZBesHO3PNy8sTcQWQeIYe16guCxhjtHr1atXW1qquru6yYZWkpqYmSVJOTs6g651Op5xOZzRjAEDCiyqulZWVqqmp0c6dO5WWlqbu7m5Jktvt1vjx49XW1qaamhrdfffdmjhxopqbm7V27VrNmTNHRUVFVv4BAJCIoros4HAM/r/pW7Zs0dKlS9XZ2akf/OAHOnr0qILBoPLy8nTPPffoySefvOwp9BcCgYDcbre4LAAg8Vi+5moTcQWQuIYeV75bAAAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYQFwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYEFVcq6urNXv2bKWlpSkrK0sLFy5US0tLxDb9/f2qrKzUxIkTlZqaqsWLF6unpyemQwNAoosqrvX19aqsrNTBgwf17rvv6uzZs5o7d66CwWB4m7Vr1+rtt9/Wjh07VF9fr+PHj2vRokUxHxwAEpnDGGOG++JPP/1UWVlZqq+v15w5c+T3+zVp0iTV1NTo3nvvlSR9/PHHuu6669TQ0KCbb775svsMBAJyu906333HcEcDAAuMpAH5/X65XK5Lbjmia65+v1+SlJGRIUlqbGzU2bNnVVpaGt5m+vTpys/PV0NDw6D7CIVCCgQCEQsAJLthx3VgYEBr1qzRLbfcohkzZkiSuru7lZKSovT09Ihts7Oz1d3dPeh+qqur5Xa7w0teXt5wRwKAhDHsuFZWVuro0aPavn37iAaoqqqS3+8PL52dnSPaHwAkgrHDedGqVav0zjvv6MCBA8rNzQ0/7/F4dObMGfX29kacvfb09Mjj8Qy6L6fTKafTOZwxACBhRXXmaozRqlWrVFtbq/3796uwsDBi/axZszRu3Djt27cv/FxLS4s6Ojrk8/liMzEAJIGozlwrKytVU1OjnTt3Ki0tLXwd1e12a/z48XK73Vq2bJnWrVunjIwMuVwurV69Wj6fb0h3CgDAN0VUt2I5HIPfGrVlyxYtXbpU0vkPETzyyCPatm2bQqGQysrK9Morr1z0ssDXcSsWgMQ19FuxRnSfqw3EFUDiGqX7XAEAgyOuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYQFwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALoo7rgQMHNH/+fHm9XjkcDr311lsR65cuXSqHwxGxzJs3L1bzAkBSiDquwWBQM2fO1KZNmy66zbx589TV1RVetm3bNqIhASDZjI32BeXl5SovL7/kNk6nUx6PZ9hDAUCys3LNta6uTllZWZo2bZpWrlypkydPXnTbUCikQCAQsQBAsot5XOfNm6c//OEP2rdvn371q1+pvr5e5eXlOnfu3KDbV1dXy+12h5e8vLxYjwQAo85hjDHDfrHDodraWi1cuPCi2/zrX//SlClTtHfvXpWUlFywPhQKKRQKhR8HAoHPAztGkmO4owGABUbSgPx+v1wu1yW3tH4r1uTJk5WZmanW1tZB1zudTrlcrogFAJKd9bh+8sknOnnypHJycmy/FQAkjKjvFjh16lTEWWh7e7uampqUkZGhjIwMrV+/XosXL5bH41FbW5see+wxTZ06VWVlZTEdHAASWdTXXOvq6nTHHXdc8HxFRYU2b96shQsX6siRI+rt7ZXX69XcuXP185//XNnZ2UPafyAQkNvtFtdcASSeoV9zHdEvtGwgrgASVwL9QgsA/hcRVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYQFwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFhBXALCAuAKABVHH9cCBA5o/f768Xq8cDofeeuutiPXGGD399NPKycnR+PHjVVpaqmPHjsVqXgBIClHHNRgMaubMmdq0adOg6zdu3KiXX35Zr776qg4dOqSrrrpKZWVl6u/vH/GwAJAsHMYYM+wXOxyqra3VwoULJZ0/a/V6vXrkkUf06KOPSpL8fr+ys7O1detW3XfffZfdZyAQkNvt1vnuO4Y7GgBYYCQNyO/3y+VyXXLLmF5zbW9vV3d3t0pLS8PPud1uFRcXq6GhYdDXhEIhBQKBiAUAkl1M49rd3S1Jys7Ojng+Ozs7vO7rqqur5Xa7w0teXl4sRwKAuIj73QJVVVXy+/3hpbOzM94jAcCIxTSuHo9HktTT0xPxfE9PT3jd1zmdTrlcrogFAJJdTONaWFgoj8ejffv2hZ8LBAI6dOiQfD5fLN8KABLa2GhfcOrUKbW2toYft7e3q6mpSRkZGcrPz9eaNWv0i1/8Qtdcc40KCwv11FNPyev1hu8oAID/BVHH9fDhw7rjjjvCj9etWydJqqio0NatW/XYY48pGAzq4YcfVm9vr2699Vbt3r1bV155ZeymRkyd/b+98R7hAuPGll5+IyCBjeg+Vxu4z3X0EVdgqOJ0nysA4DziCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC6L+EAGSSyLewzoUQ52b+2GRqDhzBQALiCsAWEBcAcAC4goAFhBXALCAuAKABcQVACwgrgBgAR8iSGLJ+gGBWBrKMeCDBogHzlwBwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQALiCsAWEBcAcAC4goAFsQ8rs8++6wcDkfEMn369Fi/DQAkNCt/Q+uGG27Q3r1f/m2jsWP5U10A/rdYqd7YsWPl8Xhs7BoAkoKVa67Hjh2T1+vV5MmT9eCDD6qjo+Oi24ZCIQUCgYgFAJJdzONaXFysrVu3avfu3dq8ebPa29t12223qa+vb9Dtq6ur5Xa7w0teXl6sRwKAUecwxhibb9Db26uCggK98MILWrZs2QXrQ6GQQqFQ+HEgEPg8sGMkOWyOlvTO/t/ey28EjRtbGu8R8I1hJA3I7/fL5XJdckvrv2lKT0/Xtddeq9bW1kHXO51OOZ1O22MAwKiyfp/rqVOn1NbWppycHNtvBQAJI+ZxffTRR1VfX69///vf+utf/6p77rlHV1xxhe6///5YvxUAJKyYXxb45JNPdP/99+vkyZOaNGmSbr31Vh08eFCTJk2K9VsBQMKKeVy3b98e610CQNLhuwUAwALiCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC/gW6yQ2lC8k+aZ/uQtfyoJExZkrAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYAFxBQAL+BDBN1yyftCADwcg2XHmCgAWEFcAsIC4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABbwCS3waSjAAs5cAcAC4goAFhBXALCAuAKABcQVACwgrgBgAXEFAAuIKwBYYC2umzZt0re//W1deeWVKi4u1t/+9jdbbwUACcdKXP/4xz9q3bp1euaZZ/SPf/xDM2fOVFlZmU6cOGHj7QAg4TiMMSbWOy0uLtbs2bP129/+VpI0MDCgvLw8rV69Wk888cQlXxsIBOR2u3W++45YjwYAI2AkDcjv98vlcl1yy5ifuZ45c0aNjY0qLf3y8+pjxoxRaWmpGhoaYv12AJCQYv7FLf/973917tw5ZWdnRzyfnZ2tjz/++ILtQ6GQQqFQ+HEgEIj1SAAw6uJ+t0B1dbXcbnd4ycvLi/dIADBiMY9rZmamrrjiCvX09EQ839PTI4/Hc8H2VVVV8vv94aWzszPWIwHAqIt5XFNSUjRr1izt27cv/NzAwID27dsnn893wfZOp1MulytiAYBkZ+XLstetW6eKigp973vf00033aQXX3xRwWBQP/zhDy/72i9vXoj5TQwAMELnuzSUm6ysxHXJkiX69NNP9fTTT6u7u1vf+c53tHv37gt+yTWYvr6+z38yIrAAElFfX9/nt4xenJX7XEdiYGBAx48fV1pamhyO8/e5BgIB5eXlqbOzM6kuGzD36EvW2Zl7dA13bmOM+vr65PV6NWbMpa+qJtzf0BozZoxyc3MHXZes12SZe/Ql6+zMPbqGM/flzli/EPdbsQDgm4i4AoAFSRFXp9OpZ555Rk6nM96jRIW5R1+yzs7co2s05k64X2gBwDdBUpy5AkCyIa4AYAFxBQALiCsAWJDwcU3Gv8X17LPPyuFwRCzTp0+P91gXOHDggObPny+v1yuHw6G33norYr0xRk8//bRycnI0fvx4lZaW6tixY/EZ9isuN/fSpUsvOP7z5s2Lz7BfUV1drdmzZystLU1ZWVlauHChWlpaIrbp7+9XZWWlJk6cqNTUVC1evPiCb5gbbUOZ+/bbb7/gmK9YsSJOE5+3efNmFRUVhT8o4PP5tGvXrvB628c6oeOazH+L64YbblBXV1d4ef/99+M90gWCwaBmzpypTZs2Dbp+48aNevnll/Xqq6/q0KFDuuqqq1RWVqb+/v5RnjTS5eaWpHnz5kUc/23bto3ihIOrr69XZWWlDh48qHfffVdnz57V3LlzFQwGw9usXbtWb7/9tnbs2KH6+nodP35cixYtiuPUQ5tbkpYvXx5xzDdu3Binic/Lzc3Vhg0b1NjYqMOHD+vOO+/UggUL9OGHH0oahWNtEthNN91kKisrw4/PnTtnvF6vqa6ujuNUl/fMM8+YmTNnxnuMqEgytbW14ccDAwPG4/GY559/Pvxcb2+vcTqdZtu2bXGYcHBfn9sYYyoqKsyCBQviMk80Tpw4YSSZ+vp6Y8z54ztu3DizY8eO8Db//Oc/jSTT0NAQrzEv8PW5jTHm+9//vvnJT34Sv6GG6OqrrzavvfbaqBzrhD1zTfa/xXXs2DF5vV5NnjxZDz74oDo6OuI9UlTa29vV3d0dcfzdbreKi4uT4vjX1dUpKytL06ZN08qVK3Xy5Ml4j3QBv98vScrIyJAkNTY26uzZsxHHfPr06crPz0+oY/71ub/w+uuvKzMzUzNmzFBVVZVOnz4dj/EGde7cOW3fvl3BYFA+n29UjnXCfXHLF6L9W1yJpLi4WFu3btW0adPU1dWl9evX67bbbtPRo0eVlpYW7/GGpLu7W5IGPf5frEtU8+bN06JFi1RYWKi2tjb97Gc/U3l5uRoaGnTFFVfEezxJ57/9bc2aNbrllls0Y8YMSeePeUpKitLT0yO2TaRjPtjckvTAAw+ooKBAXq9Xzc3Nevzxx9XS0qI333wzjtNKH3zwgXw+n/r7+5Wamqra2lpdf/31ampqsn6sEzauyay8vDz8c1FRkYqLi1VQUKA//elPWrZsWRwn+99w3333hX++8cYbVVRUpClTpqiurk4lJSVxnOxLlZWVOnr0aEJei7+Ui8398MMPh3++8cYblZOTo5KSErW1tWnKlCmjPWbYtGnT1NTUJL/frzfeeEMVFRWqr68flfdO2MsC0f4trkSWnp6ua6+9Vq2trfEeZci+OMbfhOM/efJkZWZmJszxX7Vqld555x299957EV+v6fF4dObMGfX29kZsnyjH/GJzD6a4uFiS4n7MU1JSNHXqVM2aNUvV1dWaOXOmXnrppVE51gkb12j/FlciO3XqlNra2pSTkxPvUYassLBQHo8n4vgHAgEdOnQo6Y7/J598opMnT8b9+BtjtGrVKtXW1mr//v0qLCyMWD9r1iyNGzcu4pi3tLSoo6Mjrsf8cnMPpqmpSZLifsy/bmBgQKFQaHSOdUx+LWbJ9u3bjdPpNFu3bjUfffSRefjhh016errp7u6O92iX9Mgjj5i6ujrT3t5u/vKXv5jS0lKTmZlpTpw4Ee/RIvT19ZkjR46YI0eOGEnmhRdeMEeOHDH/+c9/jDHGbNiwwaSnp5udO3ea5uZms2DBAlNYWGg+++yzhJ27r6/PPProo6ahocG0t7ebvXv3mu9+97vmmmuuMf39/XGde+XKlcbtdpu6ujrT1dUVXk6fPh3eZsWKFSY/P9/s37/fHD582Ph8PuPz+eI49eXnbm1tNc8995w5fPiwaW9vNzt37jSTJ082c+bMievcTzzxhKmvrzft7e2mubnZPPHEE8bhcJg///nPxhj7xzqh42qMMb/5zW9Mfn6+SUlJMTfddJM5ePBgvEe6rCVLlpicnByTkpJivvWtb5klS5aY1tbWeI91gffee++LP1QWsVRUVBhjzt+O9dRTT5ns7GzjdDpNSUmJaWlpie/Q5tJznz592sydO9dMmjTJjBs3zhQUFJjly5cnxH+QB5tZktmyZUt4m88++8z8+Mc/NldffbWZMGGCueeee0xXV1f8hjaXn7ujo8PMmTPHZGRkGKfTaaZOnWp++tOfGr/fH9e5f/SjH5mCggKTkpJiJk2aZEpKSsJhNcb+seYrBwHAgoS95goAyYy4AoAFxBUALCCuAGABcQUAC4grAFhAXAHAAuIKABYQVwCwgLgCgAXEFQAsIK4AYMH/A8Qnpm1BG/wWAAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "def step(velocity, smoke, pressure, dt=1.0, buoyancy_factor=1.0):\n",
        "    smoke = advect.semi_lagrangian(smoke, velocity, dt) + INFLOW\n",
        "    buoyancy_force = (smoke * (0, buoyancy_factor)).at(velocity)  # resamples smoke to velocity sample points\n",
        "    velocity = advect.semi_lagrangian(velocity, velocity, dt) + dt * buoyancy_force\n",
        "    velocity = diffuse.explicit(velocity, NU, dt)\n",
        "    velocity, pressure = fluid.make_incompressible(velocity)\n",
        "    return velocity, smoke, pressure\n",
        "\n",
        "velocity, smoke, pressure = step(velocity, smoke, None, dt=DT)\n",
        "\n",
        "print(\"Max. velocity and mean marker density: \" + format( [ math.max(velocity.values) , math.mean(smoke.values) ] ))\n",
        "\n",
        "pylab.imshow(np.asarray(smoke.values.numpy('y,x')), origin='lower', cmap='magma')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "N12QV5JGJyDq"
      },
      "source": [
        "A lot has happened in this `step()` call: we've advected the smoke field, added an upwards force via a Boussinesq model, advected the velocity field, and finally made it divergence free via a pressure solve.\n",
        "\n",
        "The Boussinesq model uses a multiplication by a tuple `(0, buoyancy_factor)` to turn the smoke field into a staggered, 2 component force field, sampled at the locations of the velocity components via the `at()` function. This function makes sure the individual force components are correctly interpolated for the velocity components of the staggered velocity. Note that this also directly ensure the boundary conditions of the original grid are kept. It internally also does `StaggeredGrid(..., extrapolation.ZERO,...)` for the resulting force grid.\n",
        "\n",
        "The pressure projection step in `make_incompressible` is typically the computationally most expensive step in the sequence above. It solves a Poisson equation for the boundary conditions of the domain, and updates the velocity field with the gradient of the computed pressure.\n",
        "\n",
        "Just for testing, we've also printed the mean value of the velocities, and the max density after the update. As you can see in the resulting image, we have a first round region of smoke, with a slight upwards motion (which does not show here yet).\n",
        "\n",
        "## Datatypes and dimensions\n",
        "\n",
        "The variables we created for the fields of the simulation here are instances of the class `Grid`.\n",
        "Like tensors, grids also have the `shape` attribute which lists all batch, spatial and channel dimensions.\n",
        "[Shapes in phiflow](https://tum-pbs.github.io/PhiFlow/Math.html#shapes) store not only the sizes of the dimensions but also their names and types."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 33,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "XaVmTuhFJyDr",
        "outputId": "030c48c6-e853-4892-9c1b-116f615b9c94"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Smoke: (xˢ=32, yˢ=40)\n",
            "Velocity: (xˢ=32, yˢ=40, vectorᶜ=x,y)\n",
            "Inflow: (xˢ=32, yˢ=40), spatial only: (xˢ=32, yˢ=40)\n"
          ]
        }
      ],
      "source": [
        "print(f\"Smoke: {smoke.shape}\")\n",
        "print(f\"Velocity: {velocity.shape}\")\n",
        "print(f\"Inflow: {INFLOW.shape}, spatial only: {INFLOW.shape.spatial}\")\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BlGxS4-gJyDr"
      },
      "source": [
        "Note that the phiflow output here indicates the type of a dimension, e.g., $^S$ for a spatial, and $^V$ for a vector dimension. Later on for learning, we'll also introduce batch dimensions.\n",
        "\n",
        "The actual content of a shape object can be obtained via `.sizes`, or alternatively we can query the size of a specific dimension `dim` via `.get_size('dim')`. Here are two examples:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 34,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SSVsk77PJyDr",
        "outputId": "a740eeac-530e-41bb-9b15-a56bdca3998c"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Shape content: (32, 40, 2)\n",
            "Vector dimension: 2\n"
          ]
        }
      ],
      "source": [
        "print(f\"Shape content: {velocity.shape.sizes}\")\n",
        "print(f\"Vector dimension: {velocity.shape.get_size('vector')}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "q-Xi2tvgJyDr"
      },
      "source": [
        "The grid values can be accessed using the `values` property. This is an important difference to a phiflow tensor object, which does not have `values`, as illustrated in the code example below."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 35,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9WQAcm3VJyDr",
        "outputId": "c396e482-da91-4d1e-fece-9f7bf7dd924e"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Statistics of the different simulation grids:\n",
            "\u001b[92m(xˢ=32, yˢ=40)\u001b[0m \u001b[94m0.008 ± 0.039\u001b[0m \u001b[37m(0e+00...2e-01)\u001b[0m\n",
            "\u001b[92m(~vectorᵈ=x,y, xˢ=~\u001b[94m(x=31, y=32)\u001b[92m \u001b[93mint64\u001b[92m, yˢ=~\u001b[94m(x=40, y=39)\u001b[92m \u001b[93mint64\u001b[92m)\u001b[0m \u001b[94m-7.23e-09 ± 2.8e-02\u001b[0m \u001b[37m(-1e-01...2e-01)\u001b[0m\n",
            "Reordered test tensor shape: (2, 5, 3)\n"
          ]
        }
      ],
      "source": [
        "print(\"Statistics of the different simulation grids:\")\n",
        "print(smoke.values)\n",
        "print(velocity.values)\n",
        "\n",
        "# in contrast to a simple tensor:\n",
        "test_tensor = math.tensor(numpy.zeros([3, 5, 2]), spatial('x,y'), channel(vector=\"x,y\"))\n",
        "print(\"Reordered test tensor shape: \" + format(test_tensor.numpy('vector,y,x').shape) ) # reorder to vector,y,x\n",
        "#print(test_tensor.values.numpy('y,x')) # error! tensors don't return their content via \".values\""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_qKh1nyEJyDs"
      },
      "source": [
        "Grids have many more properties which are documented [here](https://tum-pbs.github.io/PhiFlow/phi/field/#phi.field.Grid).\n",
        "Also note that the staggered grid has a [non-uniform shape](https://tum-pbs.github.io/PhiFlow/Math.html#non-uniform-tensors) because the number of faces is not equal to the number of cells (in this example the x component has $31 \\times 40$ cells, while y has $32 \\times 39$). The `INFLOW` grid naturally has the same dimensions as the `smoke` grid.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gjfOrgGaJyDs"
      },
      "source": [
        "## Time evolution\n",
        "\n",
        "With this setup, we can easily advance the simulation forward in time a bit more by repeatedly calling the `step` function."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 36,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0hZk5HX3w4Or",
        "outputId": "8e17552c-84e4-4bae-fba7-9828a365c12d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Computed frame 0, max velocity 0.4630011022090912\n",
            "Computed frame 1, max velocity 0.8966455459594727\n",
            "Computed frame 2, max velocity 1.4098880290985107\n",
            "Computed frame 3, max velocity 2.0411267280578613\n",
            "Computed frame 4, max velocity 2.9279565811157227\n",
            "Computed frame 5, max velocity 3.839479923248291\n",
            "Computed frame 6, max velocity 4.526943206787109\n",
            "Computed frame 7, max velocity 4.867981910705566\n",
            "Computed frame 8, max velocity 5.131079196929932\n",
            "Computed frame 9, max velocity 5.483874320983887\n"
          ]
        }
      ],
      "source": [
        "for time_step in range(10):\n",
        "    velocity, smoke, pressure = step(velocity, smoke, pressure, dt=DT)\n",
        "    print('Computed frame {}, max velocity {}'.format(time_step , np.asarray(math.max(velocity.values)) ))\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GMKKWQBLHIwP"
      },
      "source": [
        "Now the hot plume is starting to rise:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 37,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 447
        },
        "id": "Mfl80CjZxZcL",
        "outputId": "b40fc653-e217-42fb-e909-af6e2f1f80f2"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7ebc7431dd50>"
            ]
          },
          "execution_count": 37,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "pylab.imshow(smoke.values.numpy('y,x'), origin='lower', cmap='magma')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wnbQJvA-HPSL"
      },
      "source": [
        "Let's compute and show a few more steps of the simulation. Because of the inflow being located off-center to the left (with x position 30), the plume will curve towards the right when it hits the top wall of the domain."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 38,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 418
        },
        "id": "tkhCOzc0ITsj",
        "outputId": "a7a200aa-8392-41e4-f95b-ae242f67cd2f"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Computing time step 0\n",
            "Computing time step 1\n",
            "Computing time step 2\n",
            "Computing time step 10\n"
          ]
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 1600x500 with 5 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "steps = [[ smoke.values, velocity.vector['x'], velocity.vector['y'] ]]\n",
        "for time_step in range(20):\n",
        "  if time_step<3 or time_step%10==0:\n",
        "    print('Computing time step %d' % time_step)\n",
        "  velocity, smoke, pressure = step(velocity, smoke, pressure, dt=DT)\n",
        "  if time_step%5==0:\n",
        "    steps.append( [smoke.values, velocity.vector['x'], velocity.vector['y']] )\n",
        "\n",
        "fig, axes = pylab.subplots(1, len(steps), figsize=(16, 5))\n",
        "for i in range(len(steps)):\n",
        "    axes[i].imshow(steps[i][0].numpy('y,x'), origin='lower', cmap='magma')\n",
        "    axes[i].set_title(f\"d at t={i*5}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YvvvkMcGJyDt"
      },
      "source": [
        "We can also take a look at the velocities. The `steps` list above already stores `vector[0]` and `vector[1]` components of the velocities as numpy arrays, which we can show next."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 40,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 684
        },
        "id": "tl2YIDYIJyDt",
        "outputId": "2ac46ab3-b2b6-4b81-8e79-a801f16635a4"
      },
      "outputs": [
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABQwAAAFVCAYAAACq1KIuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9eElEQVR4nO3deZwlVZXg8RMRL957uVXWvlmLbCKLgE03WGozgGh16YcPjoiiM1q44VJgKz1jd9kIoq0FMrYoUxSt7YAbYsMHZLRtUFHK7mmgpaREG0FAlkJqoYrK/a0Rd/4oeZiVcU7Vi3yZ+TLj9/188qO8kzfefRH3nLhxMyuv55xzAgAAAAAAAAAi4k91BwAAAAAAAAC0DxYMAQAAAAAAADSwYAgAAAAAAACggQVDAAAAAAAAAA0sGAIAAAAAAABoYMEQAAAAAAAAQAMLhgAAAAAAAAAaWDAEAAAAAAAA0MCCIQAAAAAAAIAGFgwBAAAAAAAANLBgiJZ48MEH5ZOf/KQ88cQTB/X9P/jBD+STn/xky/vx1a9+VY466igpFotyxBFHyNVXX93y9wAwWjvkv+d5iV+XX355S98HyLp2yPdNmzbJOeecIytWrBDP8+S8885Tv7evr0/OP/98WbBggXR1dclpp50mv/jFL1raHyArplP+X3/99ercYMeOHS3tE5AVU10Dtm3bJpdddpmcdNJJMmfOHJk/f76ceuqp8uMf/zjx+5kDjB8LhmiJBx98UC677LKmisdll13W0j78wz/8g7z3ve+VY445Rq6++mpZtWqVfPjDH5Yrrriipe8DYLR2yH8Rkde+9rXyjW98Y9TXmWee2fL3AbKsHfL9iiuukJ/85CdyzDHHSC6XU78vjmN5wxveIDfccINccMEF8rnPfU527dolp556qjzyyCMt7ROQBdMp/5/3qU99aszcYPbs2S3tE5AVU10DbrvtNrniiivk8MMPl7/7u7+TT3ziEzI4OCivfe1r5brrrhv1vcwBWuPAVRaYBkqlkvzt3/6tvOENb5Cbb75ZRETe9773SRzH8ulPf1rOP/98mTNnzhT3EsBEeslLXiL//b//96nuBoAJtnnz5sZvF3V3d6vfd/PNN8u///u/y0033SRvfvObRUTkLW95i7zkJS+RSy+9VG644YbJ6jKAFjnY/H/emjVr5E//9E8noWcAJtppp50mTz31lMyfP7/x2gc+8AE54YQT5JJLLpF3vetdjdeZA7QGv2HYps477zx58YtfPOb1T37yk+J53kEfZ9euXbJgwQI59dRTxTnXeP3RRx+Vrq4ueetb32q2f/LJJ+VDH/qQHHnkkdLR0SHz5s2Tc845Z9RPFa6//no555xzRGRfEj//6/533XWX+tk2btwoIqP/GeF4/PSnP5U9e/bIhz70oVGvr1u3ToaHh+Wf//mfx3V8YDKR/+mVSiUpl8stOx4w0cj35q1cufKgjnPzzTfLokWL5E1velPjtQULFshb3vIWue2226RSqYy7L8B4kP/NO9j8/2ODg4MSRdG43xtoNWpAc4455phRi4UiIoVCQV7/+tfL008/LYODg43XmQO0Br9hOMMtXLiw8bc+rr76avnwhz8scRzLeeedJz09PXLNNdeY7X/+85/Lv//7v8u5554ry5YtkyeeeEI2bdokp556qjz44IPS2dkpp5xyinz4wx+WL33pS/Lxj39cjjrqKBGRxv/u7/3vf78888wz8qMf/Ui+8Y1vjInv3bv3oG7qnZ2d0tnZKSIi999/v4jImJ8gnnjiieL7vtx///385hEyJyv5/7zrr79errnmGnHOyVFHHSUXX3yxvP3tbz/gsYCZIGv5fjDuv/9++ZM/+RPx/dE/Hz/ppJPky1/+svz2t7+Vl73sZU0fF2g35L/utNNOk6GhIcnn87J69Wr5/Oc/L0cccUTq4wHtKOs1YMeOHWO+jzlAizi0pbVr17qVK1eOef3SSy91aS7b2972NtfZ2el++9vfuiuvvNKJiPvud797wHYjIyNjXrv77rudiLivf/3rjdduuukmJyLupz/96UH1Z926dernWLlypRORA35deumlo44XBEHi8RYsWODOPffcg+oX0A7I/+by3znnXvnKV7qrrrrK3XbbbW7Tpk3u2GOPdSLirrnmmoPqEzBVyPfm8/2PdXV1ubVr16qxd7/73WNe/+d//mcnIu72228/qM8ATBTyf+Ly/zvf+Y4777zz3Ne+9jV36623uosvvth1dna6+fPnu6eeeuqg+g9MNGrA+GqAc8498sgjrlgsune84x2jXmcO0Br8hmFG/O///b/lrrvukje/+c3y29/+Vt7xjnfIWWeddcB2HR0djf9fq9VkYGBADj/8cJk9e7b84he/kHe84x0t7+u3vvUtKZVKB/y+Qw89tPH/S6WS5PP5xO8rFosHdTxgpprp+S8i8v/+3/8b9d/vfve75cQTT5SPf/zjct555436LMBMloV8P1ilUkkKhcKY14vFYiMOzCTk/wve8pa3yFve8pbGf7/xjW+U1atXyymnnCKf+cxn5Nprr011XKCdZa0GjIyMyDnnnCMdHR1y+eWXj4oxB2gNFgwzYu7cufKlL31JzjnnHFm0aJF86UtfOqh2pVJJNmzYINddd538/ve/H/U3Efr7+yekr6961auabtPR0SHVajUxVi6XWSxAps30/E+Sz+flggsukA984AOyZcsWefWrX92S4wLtLov5runo6Ej8G0XP/51T5gaYach/26tf/Wo5+eST5cc//vGkvzcwGbJUA6IoknPPPVcefPBB+Zd/+RdZunTpqDhzgNZgwbBNaX8QdDx/sPeOO+4QkX1/L+Dpp5+W2bNnH7DNhRdeKNddd5185CMfkVWrVklvb694nifnnnuuxHGcui+WZ5999qA+Z3d3d2N3tCVLlkgURbJr1y5ZuHBh43uq1ars2bNnTAEB2hn531z+a5YvXy4iIs8991xL+gZMBPK9NfmeZMmSJbJ9+/Yxrz//GnMDTDXyf+LyX7N8+XJ5+OGHW3Y8YDyoAelrwPve9z75/ve/L9/61rfk9NNPHxNnDtAaLBi2qTlz5khfX9+Y15988slUx7v99tvlH//xH+VjH/uYfOtb35K1a9fKvffeK7mcPQRuvvlmWbt2rXz+859vvFYul8f0rdkdj6zv/7M/+7OD+pyXXnqpfPKTnxQRkRNOOEFERO677z55/etf3/ie++67T+I4bsSB6YD8by7/Nb/73e9EZN+OaEC7It9bk+9JTjjhBPnXf/1XieN41B89v/fee6Wzs1Ne8pKXNH1MoJXI/4nLf83vfvc75gVoG9SAdDXgf/7P/ynXXXedXHXVVfK2t70tsR1zgNZgwbBNHXbYYdLf3y8PPPCAHHfccSKybzX81ltvbfpYfX198t73vldOOukk+exnPyunnXaarFmzRj772c/KJZdcYrYNgmDUrySLiFx99dVjfhrQ1dXVeK+D8cffv/9PPdL8PYPTTz9d5s6dK5s2bRq1YLhp0ybp7OyUN7zhDQfVL6AdkP/N5f+zzz47ZvI/ODgoV111lcyfP19OPPHEg+oXMBXI94n7G2ZvfvOb5eabb5ZbbrlF3vzmN4uIyO7du+Wmm26SM888M/FvGwGTifyfuPxPmhv84Ac/kC1btsiHP/zhVMcEWo0a0HwNuPLKK+V//a//JR//+MflL//yL9V2zAFaZKp2W4Ft9+7drquryx166KHuqquucp/97Gfd8uXL3Z/8yZ80vWPSO9/5TlcsFt1vfvObxmvvfe97XRiGbuvWrQdsGwSB+8u//Ev3D//wD+68885zy5Ytc/PmzRu1K9n27dtdEATuFa94hbv++uvdt7/9bbdz5071uP/0T//kRMS94x3vcN/85jfdt7/97aY+U5KNGzc6EXFvfvOb3Ve+8hX3zne+04mI+8xnPjPuYwOTifxvzqWXXuqOP/54d/HFF7svf/nL7rLLLnMrV650nue5b37zm+M6NjDRyPfm/d//+3/dpz/9affpT3/a5fN59/KXv7zx37/85S8b31ev190rXvEK193d7S677DK3ceNGd8wxx7ienh730EMPjbsfwHiR/8072Pw//PDD3TnnnOOuuOIKd+2117rzzz/f5XI5t3z5crdjx45x9wNoBWpAc2655RYnIu6II45w3/jGN8Z8/XFuMwdoDRYM29gPf/hDd+yxx7p8Pu+OPPJI981vfrPpLdZvu+02JyLu85///KjXBwYG3MqVK93xxx/vqtWq2n7v3r3uXe96l5s/f77r7u52q1evdg899JBbuXLlqOLhnHNf+cpX3KGHHuqCIDjgduv1et1deOGFbsGCBc7zvFTbxif58pe/7I488kiXz+fdYYcd5r7whS+4OI5bcmxgMpH/B++HP/yhe+1rX+sWL17swjB0s2fPdq973evcnXfeOa7jApOFfG/O2rVrnYgkfl133XWjvve5555z73nPe9y8efNcZ2en+y//5b+4n//85+PuA9Aq5H9zDjb///Zv/9adcMIJrre314Vh6FasWOE++MEPsliItkMNOHjPnxfta/++MAcYP8+5/X73FAAAAAAAAEBm+Qf+FgAAAAAAAABZwaYn01h/f/8B/1Do4sWLJ6k3ACYT+Q9kB/kOZBf5D2QbNQBTiX+SPI2dd9558rWvfc38Hi4vMDOR/0B2kO9AdpH/QLZRAzCVWDCcxh588EF55plnzO8544wzJqk3ACYT+Q9kB/kOZBf5D2QbNQBTiQVDAAAAAAAAAA1t9zcM4ziWZ555Rnp6esTz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v0i2awD5PxY1YCxqwMxFDRiN/B9rsvK/bRcMv/Od78hFF10kl156qfziF7+Q448/XlavXi27du2a6q5NmuHhYTn++ONl48aNifHPfe5z8qUvfUmuvfZauffee6Wrq0tWr14t5XJ5kns6OTZv3izr1q2Te+65R370ox9JrVaT173udTI8PNz4no9+9KPyve99T2666SbZvHmzPPPMM/KmN71pCns9sZYtWyaXX365bNmyRe677z45/fTT5ayzzpL//M//FJHpfT6yXgPI/7GoAWPN1BqQ9fwXoQbsj/wfa6bmvwg1gPwfixowFjVg5qIGjEb+jzVp+e/a1EknneTWrVvX+O8oitzSpUvdhg0bprBXU0dE3K233tr47ziO3eLFi92VV17ZeK2vr88VCgX37W9/ewp6OPl27drlRMRt3rzZObfv84dh6G666abG9/zmN79xIuLuvvvuqermpJszZ477x3/8x2l/PqgBLyD/k1EDks2EGkD+j0YNGIv8TzYT8t85asAfI/+TUQOSUQNmHmrAWOR/sonI/7b8DcNqtSpbtmyRM844o/Ga7/tyxhlnyN133z2FPWsfjz/+uOzYsWPUOert7ZWTTz45M+eov79fRETmzp0rIiJbtmyRWq026py89KUvlRUrVmTinERRJDfeeKMMDw/LqlWrpvX5oAbYyP99qAGjzZQaQP4fGDWA/N/fTMl/EWrAgZD/+1ADRqMGZAc1gPzf30Tmf67VnW2F3bt3SxRFsmjRolGvL1q0SB566KEp6lV72bFjh4hI4jl6PjaTxXEsH/nIR+RVr3qVHHvssSKy75zk83mZPXv2qO+d6efkV7/6laxatUrK5bJ0d3fLrbfeKkcffbRs3bp12p4PaoAt6/kvQg34YzOtBpD/B5b1GkD+v2Cm5b8INeBAsp7/ItSAP0YNyJ6s1wDy/wWTkf9tuWAIHMi6devk17/+tfzbv/3bVHdlyh155JGydetW6e/vl5tvvlnWrl0rmzdvnupuAROKGvACagCyhvx/AfmPLKIGvIAagKwh/18wGfnflv8kef78+RIEwZhdXHbu3CmLFy+eol61l+fPQxbP0QUXXCDf//735ac//aksW7as8frixYulWq1KX1/fqO+f6eckn8/L4YcfLieeeKJs2LBBjj/+ePniF784rc8HNcCW5fwXoQbsb6bVAPL/wLJcA8j/0WZa/otQAw4ky/kvQg3YHzUge7JcA8j/0SYj/9tywTCfz8uJJ54od955Z+O1OI7lzjvvlFWrVk1hz9rHIYccIosXLx51jgYGBuTee++dsefIOScXXHCB3HrrrfKTn/xEDjnkkFHxE088UcIwHHVOHn74YXnqqadm7DlJEsexVCqVaX0+qAG2LOa/CDXgYE33GkD+H1gWawD5f3Cme/6LUAMOJIv5L0INOFjUgJkvizWA/D84E5L/LdyUpaVuvPFGVygU3PXXX+8efPBBd/7557vZs2e7HTt2THXXJs3g4KC7//773f333+9ExP393/+9u//++92TTz7pnHPu8ssvd7Nnz3a33Xabe+CBB9xZZ53lDjnkEFcqlaa45xPjgx/8oOvt7XV33XWX2759e+NrZGSk8T0f+MAH3IoVK9xPfvITd99997lVq1a5VatWTWGvJ9bf/M3fuM2bN7vHH3/cPfDAA+5v/uZvnOd57oc//KFzbnqfj6zXAPJ/LGrAWDO1BmQ9/52jBuyP/B9rpua/c9QA8n8sasBY1ICZixowGvk/1mTlf9suGDrn3NVXX+1WrFjh8vm8O+mkk9w999wz1V2aVD/96U+diIz5Wrt2rXNu35bqn/jEJ9yiRYtcoVBwr3nNa9zDDz88tZ2eQEnnQkTcdddd1/ieUqnkPvShD7k5c+a4zs5O91//639127dvn7pOT7B3v/vdbuXKlS6fz7sFCxa417zmNY0i4dz0Px9ZrgHk/1jUgLFmcg3Icv47Rw3YH/k/1kzOf+eyXQPI/7GoAWNRA2YuasBo5P9Yk5X/nnPONfc7iQAAAAAAAABmqrb8G4YAAAAAAAAApgYLhgAAAAAAAAAaWDAEAAAAAAAA0MCCIQAAAAAAAIAGFgwBAAAAAAAANLBgCAAAAAAAAKCBBUMAAAAAAAAADSwYAgAAAAAAAGhgwRAAAAAAAABAAwuGAAAAAAAAABpYMAQAAAAAAADQ8P8BWAlsJuBKBXsAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 1600x500 with 5 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABQcAAAFGCAYAAADXdinsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB3WklEQVR4nO3de5wldX3n/3fVufVlZnquzEUGRLmIIJAlgYy6Lgo4QZfViLrobgR1NdFBV9lsEoyKaNwB3SQk/mDIRYEoSBYeEh+aqFGUMRdwI5clLivxziAzXObS93Orqt8fk+mh6e/nM3NqTnef7no9H49+JNa3v1Xf+tb386k6NYf+RFmWZQIAAAAAAABQOPF8DwAAAAAAAADA/ODlIAAAAAAAAFBQvBwEAAAAAAAACoqXgwAAAAAAAEBB8XIQAAAAAAAAKCheDgIAAAAAAAAFxctBAAAAAAAAoKB4OQgAAAAAAAAUFC8HAQAAAAAAgILi5SAAAAAAAABQULwcRFc8/PDD+shHPqKf/vSnh/X7f/M3f6OPfOQjXR/Hpz/9aZ188snq6+vTCSecoE996lNdPwaA6Xoh/qMoCv5cffXVXT0OUHS9EO/btm3TG97wBh1zzDGKokiXXnqp+bv79u3TO9/5Tq1Zs0aDg4N6+ctfrvvvv7+r4wGKYiHF/0033WQ+G+zataurYwKKYr5zwI4dO3TVVVfprLPO0ooVK7R69Wqdc845+sY3vhH8fZ4BOsPLQXTFww8/rKuuuqqjRHHVVVd1dQx/8id/ov/yX/6LTjnlFH3qU5/Spk2b9N73vlfXXHNNV48DYLpeiH9JOv/88/XZz3522s+FF17Y9eMARdYL8X7NNdfom9/8pk455RSVy2Xz99I01atf/Wrdeuutuuyyy/SJT3xCTz75pM455xz94Ac/6OqYgCJYSPF/wEc/+tEZzwbLly/v6piAopjvHPDFL35R11xzjY4//nj93u/9nj70oQ9pdHRU559/vm688cZpv8szQOcOnVGBBWByclK/+7u/q1e/+tW64447JEnveMc7lKapPvaxj+md73ynVqxYMc+jBDCbTjzxRP3n//yf53sYAGbZ9u3bp741tGTJEvP37rjjDv3jP/6jbr/9dr3+9a+XJL3xjW/UiSeeqCuvvFK33nrrXA0ZQJccbvwfcMEFF+gXf/EX52BkAGbby1/+cj366KNavXr11Lbf+I3f0BlnnKEPf/jDeutb3zq1nWeAzvHNwR516aWX6rnPfe6M7R/5yEcURdFh7+fGG29UFEV64IEHZrT9j//xP1QqlfTzn//c7P+zn/1M7373u3XSSSepv79fq1at0hve8IZp/1pw00036Q1veIOk/QF74Cv7d999t3lu1113naTp/yngkfjWt76l3bt3693vfve07Vu2bNH4+Lj++q//+oj2D8wl4j+/yclJ1ev1ru0PmG3Ee+eOPfbYw9rPHXfcobVr1+p1r3vd1LY1a9bojW98o774xS+q0Wgc8ViAI0H8d+5w4/+ZRkdHlSTJER8b6DZyQGdOOeWUaS8GJalWq+lVr3qVHnvsMY2Ojk5t5xmgc3xzcJF7/etfry1btuiWW27RL/zCL0xru+WWW3TOOefoOc95jtn/n/7pn/SP//iPuvjii3X00Ufrpz/9qbZt26ZzzjlHDz/8sAYGBvSyl71M733ve/XHf/zH+sAHPqCTTz5Zkqb+77P9+q//uh5//HF9/etf12c/+9kZ7Xv37j2sG/jAwIAGBgYkaSoRPvtfBs8880zFcawHHniAbxShcIoS/wfcdNNNuv7665VlmU4++WR98IMf1Jvf/OZD7gtYDIoW74fjgQce0L/5N/9GcTz938LPOuss/emf/qn+5V/+RS960Ys63i/Qa4h/28tf/nKNjY2pWq1q8+bN+v3f/32dcMIJufcH9KKi54Bdu3bN+D2eAXLI0JMuueSS7Nhjj52x/corr8w6vWxvetObsg0bNmRJkkxtu//++zNJ2Y033uj2nZiYmLHtnnvuySRlf/EXfzG17fbbb88kZd/61rcOa0xbtmwxz+PYY4/NJB3y58orr5y2v1KpFNzfmjVrsosvvviwxgX0AuK/s/jPsix78YtfnF177bXZF7/4xWzbtm3ZqaeemknKrr/++sMaEzBfiPfO4/2ZBgcHs0suucRse9vb3jZj+1//9V9nkrKvfvWrh3UOwGwh/mcv/v/yL/8yu/TSS7Obb745u/POO7MPfvCD2cDAQLZ69ers0UcfPazxA7ONHHBkOSDLsuwHP/hB1tfXl/3ar/3atO08A3SObw4WwFve8hZ9/vOf17e+9S2de+65kvb/C0J/f78uuugit29/f//U/99qtTQyMqLjjz9ey5cv1/33369f+7Vf6/p4b7nlFk1OTh7y9573vOdN/f+Tk5OqVqvB3+vr6zus/QGLURHiX5L+4R/+Ydr/ftvb3qYzzzxTH/jAB3TppZdOOxdgsSpKvB+uyclJ1Wq1Gdv7+vqm2oHFgvif7o1vfKPe+MY3Tv3v1772tdq8ebNe9rKX6eMf/7huuOGGXPsFelURc8DExITe8IY3qL+/X1dfffW0Np4BOsfLwQI4//zztX79et1yyy0699xzlaapPv/5z+s1r3mNli5d6vadnJzU1q1bdeONN+rnP/+5siybahseHp6V8b7kJS/puE9/f7+azWawrV6v82IAhVWE+A+pVqu67LLL9Bu/8Ru677779NKXvrQr+wV6WVHj3dLf3x/8m0IH/i4pzwZYTIj/Q3vpS1+qs88+W9/4xjfm/NjAbCtaDkiSRBdffLEefvhhfeUrX9GGDRumtfMM0DleDvYo64915vljuqVSSW9+85v1Z3/2Z7r++uv1D//wD3r88ccP62/wvec979GNN96o973vfdq0aZOGhoYURZEuvvhipWna8VgOx1NPPXVY57lkyZKpKmXr169XkiR68sknddRRR039TrPZ1O7du2ckC6CXEf+dxb9l48aNkqQ9e/Z0ZWzAbCDeuxPvIevXr9fOnTtnbD+wjWcDzDfif/bi37Jx40Y98sgjXdsfcCTIAflzwDve8Q59+ctf1i233KJXvOIVM9p5BugcLwd71IoVK7Rv374Z23/2s5/l2t9b3vIW/f7v/76+9KUv6Stf+YrWrFmjzZs3H7LfHXfcoUsuuUS///u/P7WtXq/PGFunlYe83/+lX/qlwzrPK6+8Uh/5yEckSWeccYYk6bvf/a5e9apXTf3Od7/7XaVpOtUOLATEf2fxb/nxj38saX9lMqBXEe/difeQM844Q3/3d3+nNE2n/UHy73znOxoYGNCJJ57Y8T6BbiL+Zy/+LT/+8Y95LkDPIAfkywH//b//d91444269tpr9aY3vSnYj2eAzvFysEc9//nP1/DwsB566CGddtppkva/5b7zzjtz7e+0007Taaedpj//8z/Xvffeq0suuUTl8qEvf6lUmva1Ykn61Kc+NeMt/+DgoCQFk1vIM39/+fLl09ry/P2BV7ziFVq5cqW2bds27eXgtm3bNDAwoFe/+tWHNS6gFxD/ncX/U089NeNBf3R0VNdee61Wr16tM88887DGBcwH4n32/ubY61//et1xxx36whe+oNe//vWSpKefflq33367LrzwwuDfIgLmEvE/e/Efejb4m7/5G913331673vfm2ufQLeRAzrPAZ/85Cf1P//n/9QHPvAB/df/+l/NfjwDdI6Xgz3q4osv1m//9m/rV3/1V/Xe975XExMT2rZtm0488UTdf//9ufb5lre8Rb/5m78pSYf19WJJ+vf//t/rs5/9rIaGhvTCF75Q99xzj77xjW9o1apV037vjDPOUKlU0jXXXKPh4WHVajW94hWvmPaf+D7TgQ/r733ve7V582aVSiVdfPHFkvL/zcGPfexj2rJli97whjdo8+bN+ru/+zt97nOf08c//nGtXLmy430C84X478x1112nv/qrv9KFF16oY445Rjt37tRnPvMZPfroo/rsZz9rFisCegHx3rkvfelL+j//5/9I2v+H0x966CH93u/9niTpP/yH/zD1Aev1r3+9fvmXf1lvfetb9fDDD2v16tW6/vrrlSSJrrrqqlzHBrqJ+O/c4cb/i1/8Yv3CL/yCfvEXf1FDQ0O6//779ZnPfEYbN27UBz7wgVzHBrqNHNCZO++8U7/1W7+lE044QSeffLI+97nPTWs///zztXbtWkk8A+QyX2WScWh/+7d/m5166qlZtVrNTjrppOxzn/tcrrLmB+zcuTMrlUrZiSeeeNh99u7dm731rW/NVq9enS1ZsiTbvHlz9v3vfz879thjs0suuWTa7/7Zn/1Z9rznPS8rlUqHLHHebrez97znPdmaNWuyKIpyn9Oz/emf/ml20kknZdVqNXv+85+f/eEf/mGWpmlX9g3MJeL/8P3t3/5tdv7552fr1q3LKpVKtnz58uyVr3xldtdddx3RfoG5Qrx35pJLLskkBX9uvPHGab+7Z8+e7O1vf3u2atWqbGBgIPt3/+7fZf/0T/90xGMAuoX478zhxv/v/u7vZmeccUY2NDSUVSqV7Jhjjsne9a53Zbt27TriMQDdRA44fAfmxfp59lh4BuhMlGXP+v4oFq2nn35a69ev14c//GF96EMfmu/hAJhDxD9QHMQ7UFzEP1Bs5ADkFR/6V7BY3HTTTUqSRL/2a78230MBMMeIf6A4iHeguIh/oNjIAciLvzm4gA0PDx/yj3iuW7dO3/zmN/Xwww/r4x//uF772tfquc997twMEMCsIf6B4iDegeIi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6PEvFSsHEP9hRY1/iRwgkQMkckBRcwDxT/xLxH9R418iB0hzlwN68uUg8GxbtmzR9773Pf393//9fA9lXpx00kl68MEHNTw8rDvuuEOXXHKJtm/fPt/DAuZE0eNfIgeg2MgB5AAUF/FP/KPYyAFzlwN68j8rXr16tUql0owqK0888YTWrVs3T6OafwfOvWjzctlll+nLX/6yvvWtb+noo4+e2r5u3To1m03t27dv2u8vxvmoVqs6/vjjdeaZZ2rr1q06/fTT9Ud/9EeLdg7IAWFFzAHE/35FygHEf1gR418iBxxADljY59QNRcwBxP9+xP/CPqduKGL8S+SAA+YqB/Tky8FqtaozzzxTd91119S2NE111113adOmTfM4svl13HHHad26ddPmZWRkRN/5zncW5bxkWabLLrtMd955p775zW/quOOOm9Z+5plnqlKpTJuPRx55RI8++uiinI9nStNUjUZj0c4BOSCsSDmA+Pct5hxA/IcVKf4lcsChkAOKp0g5gPj3Ef/FU6T4l8gBhzJrOaBLBVO67rbbbstqtVp20003ZQ8//HD2zne+M1u+fHm2a9eu+R7arBodHc0eeOCB7IEHHsgkZX/wB3+QPfDAA9nPfvazLMuy7Oqrr86WL1+effGLX8weeuih7DWveU123HHHZZOTk/M88u5717velQ0NDWV33313tnPnzqmfiYmJqd/5jd/4jeyYY47JvvnNb2bf/e53s02bNmWbNm2ax1F33+/8zu9k27dvz37yk59kDz30UPY7v/M7WRRF2d/+7d9mWbZ454AcUOwcQPwfVMQcQPwXO/6zjBzwTOQAckDRcgDxfxDxT/wXLf6zjBzwTHOZA3r25WCWZdmnPvWp7Jhjjsmq1Wp21llnZffee+98D2nWfetb38okzfi55JJLsizbX8b8Qx/6ULZ27dqsVqtl5557bvbII4/M76BnSWgeJGU33njj1O9MTk5m7373u7MVK1ZkAwMD2a/+6q9mO3funL9Bz4K3ve1t2bHHHptVq9VszZo12bnnnjuVDLJscc8BOaC4OYD4P6ioOYD4L278Zxk54JnIAeSAouUA4v8g4p/4L1r8Zxk54JnmMgdEWZZlnX/fEAAAAAAAAMBC15N/cxAAAAAAAADA7OPlIAAAAAAAAFBQvBwEAAAAAAAACoqXgwAAAAAAAEBB8XIQAAAAAAAAKCheDgIAAAAAAAAFxctBAAAAAAAAoKB4OQgAAAAAAAAUFC8HAQAAAAAAgILi5SAAAAAAAABQULwcBAAAAAAAAAqKl4MAAAAAAABAQf3/6W1d9plmiTUAAAAASUVORK5CYII=",
            "text/plain": [
              "<Figure size 1600x500 with 5 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "fig, axes = pylab.subplots(1, len(steps), figsize=(16, 5))\n",
        "for i in range(len(steps)):\n",
        "    axes[i].imshow(steps[i][1].numpy('y,x'), origin='lower', cmap='magma')\n",
        "    axes[i].set_title(f\"u_x at t={i*5}\")\n",
        "\n",
        "fig, axes = pylab.subplots(1, len(steps), figsize=(16, 5))\n",
        "for i in range(len(steps)):\n",
        "    axes[i].imshow(steps[i][2].numpy('y,x'), origin='lower', cmap='magma')\n",
        "    axes[i].set_title(f\"u_y at t={i*5}\")\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ooqVxCPM8PXl"
      },
      "source": [
        "It looks simple here, but this simulation setup is a powerful tool. The simulation could easily be extended to more complex cases or 3D, and it is already fully compatible with backpropagation pipelines of deep learning frameworks.\n",
        "\n",
        "In the next chapters we'll show how to use these simulations for training NNs, and how to steer and modify them via trained NNs. This will illustrate how much we can improve the training process by having a solver in the loop, especially when the solver is _differentiable_. Before moving to these more complex training processes, we will cover a simpler supervised approach in the next chapter. This is very fundamental: even when aiming for advanced physics-based learning setups, a working supervised training is always the first step."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Au5_64c4JyDt"
      },
      "source": [
        "## Next steps\n",
        "\n",
        "You could create a variety of nice fluid simulations based on this setup. E.g., try changing the spatial resolution, the buoyancy factors, and the overall length of the simulation run."
      ]
    }
  ],
  "metadata": {
    "colab": {
      "name": "overview-ns-forw.ipynb",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8.5"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
